#  本章节研究是 函数的高级


print("--------函数的多个返回值----------")


def test_return():
    # 返回多个值
    return 1, "你好呀"


x, y = test_return()
print(x)  # 1
print(y)  # 你好呀
print(type(x))

print("---------参数位置来传递参数----------")


def user_info(name, age, sex):
    print(f"您的姓名:{name},年龄:{age},sex:{sex}")


user_info("tom", 20, "男")

print("-----------关键字参数-------------")
def user_info(name, age, sex):
    print(f"您的姓名:{name},年龄:{age},sex:{sex}")

# 关键字参数 就是根据关键字进行传递参数，不依赖固定顺序
user_info(name="小明",age=19,sex="男")

# 根据关键字传递参数，可以不按照固定的苏洵
user_info(age=58, sex="男", name="小明")

# 可以和位置参数混用，位置参数必须在前，且匹配参数顺序
user_info("小红",age=19,sex="男")


print("--------------缺省参数-----------------------")
def user_info(name,age,sex="女"):
    print(f"您的姓名:{name},年龄:{age},sex:{sex}")
user_info("tom",20)
user_info("jerry",19,"男")

print("------------不定长传参-位置传递--------------")
def user_info(*args):
    print(args)
    print(type(args))

user_info("TOM")
user_info("tom",18)


print("-------不定长传参-关键字传递---------------")

def user_info(**kwargs):
    print(kwargs)
    print(type(kwargs))
user_info(name="tom",age=18,phone=110)


print("----------匿名函数---------------")
def test_func(cumpute):
    # 第二步执行 cumpute(1,3)
    result=cumpute(1,3)
    # 第四步：打印结果
    print(result)

# 第三步执行 计算并返回结果
def cumpute(x,y):
    return x+y
# 第一步执行test_func()
test_func(cumpute)


print("------------匿名函数 lambda-----------------")
def test_func(compute):
    result=compute(1,2)
    print(result)

def compute(x,y):
     return x+y
# lambda表达式
test_func(lambda x,y:x+y)